package com.ruangong.GitClient.Test.YanZhaoWangTest;

import com.ruangong.GitClient.YanZhaoWang.Major;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
    public static void main(String[] args) throws Exception{
        /**
         * <table class="ch-table more-content">
         *        <thead>
         *         <tr>
         *          <th class="ch-table-center" width="65">考试方式</th>
         *          <th>院系所</th>
         *          <th>专业</th>
         *          <th>研究方向</th>
         *          <th class="ch-table-center" width="65">学习方式</th>
         *          <th class="ch-table-center" width="80">指导教师</th>
         *          <th class="ch-table-center" width="80">拟招生人数</th>
         *          <th class="ch-table-center" width="65">考试范围</th>
         *          <th class="ch-table-center" width="65">备注</th>
         *         </tr>
         *        </thead>
         *        <tbody>
         *         <tr>
         *          <td class="ch-table-center">统考</td>
         *          <td>(013)计算学部</td>
         *          <td>(081200)计算机科学与技术</td>
         *          <td>(00)不区分研究方向</td>
         *          <td class="ch-table-center">全日制</td>
         *          <td class="ch-table-center"><!--  -->
         *           <div style=" width: 100px; overflow:hidden;  white-space: nowrap; text-overflow: ellipsis; "><span class="js-from-title" data-title=""></span>
         *           </div></td>
         *          <td class="ch-table-center"><script language="javascript">
         *       document.write(cutString('专业：15(不含推免)',6));
         *       </script></td>
         *          <td class="ch-table-center"><a href="/zsml/kskm.jsp?id=1021321013081200001" target="_blank">查看</a></td>
         *          <td class="ch-table-center"><script language="javascript">
         *      document.write(cutString('报名期间中国研究生招生信息网公布的我校各学科拟招生人数为参考计划，后期会根据正式招生计划下达、实际录取推免硕士生情况以及统考生源情况等进行增减调整.',6));
         *      </script></td>
         *         </tr>
         *         <tr>
         *          <td class="ch-table-center">统考</td>
         *          <td>(902)哈尔滨工业大学（威海）</td>
         *          <td>(081200)计算机科学与技术</td>
         *          <td>(00)不区分研究方向</td>
         *          <td class="ch-table-center">全日制</td>
         *          <td class="ch-table-center"><!--  -->
         *           <div style=" width: 100px; overflow:hidden;  white-space: nowrap; text-overflow: ellipsis; "><span class="js-from-title" data-title=""></span>
         *           </div></td>
         *          <td class="ch-table-center"><script language="javascript">
         *       document.write(cutString('专业：2(不含推免)',6));
         *       </script></td>
         *          <td class="ch-table-center"><a href="/zsml/kskm.jsp?id=1021321902081200001" target="_blank">查看</a></td>
         *          <td class="ch-table-center"><script language="javascript">
         *      document.write(cutString('报名期间中国研究生招生信息网公布的我校各学科拟招生人数为参考计划，后期会根据正式招生计划下达、实际录取推免硕士生情况以及统考生源情况等进行增减调整.',6));
         *      </script></td>
         *         </tr>
         *         <tr>
         *          <td class="ch-table-center">统考</td>
         *          <td>(903)哈尔滨工业大学（深圳）</td>
         *          <td>(081200)计算机科学与技术</td>
         *          <td>(00)不区分研究方向</td>
         *          <td class="ch-table-center">全日制</td>
         *          <td class="ch-table-center"><!--  -->
         *           <div style=" width: 100px; overflow:hidden;  white-space: nowrap; text-overflow: ellipsis; "><span class="js-from-title" data-title=""></span>
         *           </div></td>
         *          <td class="ch-table-center"><script language="javascript">
         *       document.write(cutString('专业：11(不含推免)',6));
         *       </script></td>
         *          <td class="ch-table-center"><a href="/zsml/kskm.jsp?id=1021321903081200001" target="_blank">查看</a></td>
         *          <td class="ch-table-center"><script language="javascript">
         *      document.write(cutString('报名期间中国研究生招生信息网公布的我校各学科拟招生人数为参考计划，后期会根据正式招生计划下达、实际录取推免硕士生情况以及统考生源情况等进行增减调整.',6));
         *      </script></td>
         *         </tr>
         *        </tbody>
         *       </table>
         */

        /**
         * ssdm：省市代码
         * dwmc：单位名称
         * mldm：目录代码
         * mlmc：目录名称
         * yjxkdm：研究学科代码
         * xxfs：学习方式
         * zymc：专业名称
         */
        List<Major> majorList = new java.util.ArrayList<>();
        String[] University = {"哈尔滨工业大学", "吉林大学", "清华大学", "北京大学", "复旦大学", "上海交通大学", "浙江大学", "南京大学", "中国科学技术大学", "武汉大学", "西安交通大学", "四川大学", "中山大学", "东南大学", "天津大学", "华中科技大学", "哈尔滨工程大学", "北京航空航天大学", "北京理工大学", "北京科技大学", "北京化工大学", "北京邮电大学", "北京林业大学", "北京交通大学", "北京中医药大学", "北京师范大学", "北京外国语大学", "北京语言大学", "北京电子科技学院", "中国人民大学", "中国农业大学", "中国矿业大学", "中国地质大学", "中国政法大学", "中国人民公安大学", "中国科学院大学", "中国社会科学院大学", "中国医学科学院", "中国医学科学院", "中国中医科学院", "中国药科大学", "中国传媒大学", "中国音乐学院", "中国戏曲学院", "中国美术学院", "中央美术学院", "中央戏剧学院", "中央音乐学院"};
        String[] BEIJING_UNIVERSITY={"北京大学","清华大学"};
        Map<Integer,String[]> PROVINCE_UNIVERSITY=new HashMap<>();

        try {
            int ssdm = 22;
            String yixkdm = "0812";
            String url = "https://yz.chsi.com.cn/zsml/querySchAction.do?ssdm=" + ssdm + "&dwmc=" + University[1] + "&mldm=&mlmc=&yjxkdm=" + yixkdm + "&xxfs=&zymc=";
            // 连接到网页
            Document doc = Jsoup.connect(url).get();
            // 解析网页标题
            String title = doc.title();
            System.out.println("标题: " + title);


            // 如果你想提取表格中的数据
            Elements tables = doc.select("table");
            for (Element table : tables) {
                Elements rows = table.select("tr");
                for (Element row : rows) {
                    List<String> major = new java.util.ArrayList<>();
                    Elements cols = row.select("td");
                    for (Element col : cols) {
                        if (!col.select("script").isEmpty()) {
                            Elements scripts = col.select("script");
                            for (Element script : scripts) {
//                            System.out.println(script.data());
                                String data = script.data();
//                            System.out.println(data);
                                String[] split = data.split("document.write\\(cutString\\('");
//                            System.out.println(split.length);
                                for (String s : split) {
                                    if (s.contains("',6)")) {
                                        String[] split1 = s.split("',6\\)\\);");
//                                    for (String s1 : split1) {
//                                        if(s1.length()>0)
//                                            System.out.println(s1);
////                                        System.out.println(s1);
//                                    }
//                                    System.out.println("---------------------------------------------------");
                                        major.add(split1[0]);
//                                        System.out.print(split1[0]+ "\t");
//                                    System.out.println("---------------------------------------------------");
                                    }
                                }

                            }
                        } else {
                            major.add(col.text());
//                            System.out.print(col.text() + "\t");
                        }
                    }
//                    System.out.println();
//                    System.out.println("---------------------------------------------------");
//                    System.out.println(major);
//                    System.out.println("---------------------------------------------------");
//                    System.out.println();
                    if (major.size() > 0) {
                        majorList.add(new Major(major.get(0), major.get(1), major.get(2), major.get(3), major.get(4), major.get(5), major.get(6), major.get(7), major.get(8)));
                    }
                }
            }
//            System.out.println(doc);
        } catch (Exception e) {
            e.printStackTrace();
        }
        for (Major major : majorList) {
            System.out.println(major);
        }
    }
}
